package me.j360.springboot.simple.dao;


import me.j360.springboot.simple.base.dao.BaseDao;
import me.j360.springboot.simple.entity.Admin;

import javax.transaction.Transactional;

/**
 * Dao接口 - 管理员
 * ============================================================================
 * 版权所有 2014 。
 * 
 * @author min_xu
 * 
 * @version 0.1 2014-01-20
 * @version 0.2 2014-07-25 update by fallenpanda
 * ============================================================================
 */

public interface AdminDao extends BaseDao<Admin, String> {
	
	/**
	 * 判断用户名是否存在（不区分大小写）
	 * @param username
	 * 
	 * @return
	 */
	public boolean isExistByUsername(String username);
	
	/**
	 * 判断手机号是否存在（不区分大小写）
	 * @param usermobile
	 * 
	 * @return
	 */
	public boolean isExistByUsermobile(String usermobile);
	
	/**
	 * 判断邮箱是否存在（不区分大小写）
	 * @param useremail
	 * 
	 * @return
	 */
	public boolean isExistByUseremail(String useremail);
	
	/**
	 * 判断openId是否存在（不区分大小写）
	 * @param openId
	 * 
	 * @return
	 */
	public boolean isExistByOpenId(String openId);
	
	/**
	 * 根据用户名获取管理员对象，若管理员不存在，则返回null（区分大小写）
	 * @param username
	 * 
	 * @return
	 */
	public Admin getAdminByUsername(String username);

	/**
	 * 根据手机号获取管理员对象，若管理员不存在，则返回null（区分大小写）
	 * @param usermobile
	 * 
	 * @return
	 */
	public Admin getAdminByUsermobile(String usermobile);
	
	/**
	 * 根据邮箱获取管理员对象，若管理员不存在，则返回null（区分大小写）
	 * @param useremail
	 * 
	 * @return
	 */
	public Admin getAdminByUseremail(String useremail);



    public Admin getWeixinAdminByLastOpenId(String openId);
	/**
	 * 根据openId获取管理员对象，若管理员不存在，则返回null（区分大小写）
	 * @param openId
	 * 
	 * @return
	 */
	public Admin getAdminByOpenId(String openId);
	
	/**
	 * 根据用户名、密码登陆
	 * @param username（username|usermobile|useremail）
	 * @param password
	 * @return
	 */
	public Admin getAdmin(String username, String password);



    public void saveFall(Admin admin);
}